home *** CD-ROM | disk | FTP | other *** search
- EXTRN POLYMORPH : NEAR
- EXTRN ENCRYPT : NEAR
- EXTRN JUNK_GEN : NEAR
-
- SMEGSIZE EQU 2016
-
- CODESG SEGMENT BYTE PUBLIC
-
- ASSUME CS:CODESG,DS:CODESG,ES:CODESG,SS:CODESG
-
- ORG 100h
-
- BEGIN: JMP MAIN
-
- F_NAME: DB '0000.COM',0
-
- SELECT_MES: DB 'SMEG v0.3. Generation Difference Demonstration'
- DB 13,10,9
- DB ' (C) The Black Baron 1994',13,10,10,10
- DB 'SELECT THE NUMBER OF GENERATIONS:',13,10,10
- DB '1 -- 10 Generations',13,10
- DB '2 -- 100 ""',13,10
- DB '3 -- 1000 ""',13,10
- DB '4 -- 10000 "" (Large HD`s Only!!)$'
- MES1: DB ' 10 $'
- MES2: DB ' 100 $'
- MES3: DB ' 1000 $'
- MES4: DB ' 10000 $'
- GEN_MES: DB 13,10,10,10
- DB 'Generating$'
- WAIT_MES: DB 'Executable .COM Generations, Please Wait...$'
- DONE: DB 13,10,10
- DB 'DONE! Now examine each, and note how different they are!'
- DB 13,10,10,7,'$'
- ERROR: DB 13,10,10
- DB 'SORRY! A disk error has occurred!'
- DB 13,10,10,7,'$'
-
- NUM_TABLE: DW 10,MES1,100,MES2,1000,MES3,10000,MES4
-
- MAIN: MOV AX,3
- INT 10h
-
- MOV DX,OFFSET SELECT_MES
- MOV AH,9
- INT 21h
-
- GET_CHOICE: MOV AX,0C07h
- INT 21h
- CMP AL,'1'
- JB GET_CHOICE
- CMP AL,'4'
- JA GET_CHOICE
-
- SUB AL,'1';
- XOR AH,AH
- ADD AX,AX
- ADD AX,AX
- ADD AX,OFFSET NUM_TABLE
- XCHG BX,AX
-
- PUSH BX
- MOV DX,OFFSET GEN_MES
- MOV AH,9
- INT 21h
-
- POP BX
- MOV CX,[BX]
- PUSH CX
- MOV DX,[BX+2]
- INT 21h
-
- MOV DX,OFFSET WAIT_MES
- INT 21h
-
- POP CX
- GEN_PROGS: PUSH CX
- MOV BP,OFFSET THE_END + SMEGSIZE
- MOV DI,OFFSET THE_END + SMEGSIZE + 45
- MOV DX,OFFSET DEMO
- MOV CX,DEMO_SIZE
- MOV AX,100h
- CALL POLYMORPH
- MOV AH,5Bh
- MOV DX,OFFSET F_NAME
- XOR CX,CX
- INT 21h
- JNC CREATED_OK
- CLOSE_ERROR: CALL DISP_ERROR
- ERROR_END: POP CX
- MOV AX,04CFFh
- INT 21h
-
- CREATED_OK: XCHG AX,BX
- MOV AH,40h
- MOV CX,[BP+39]
- MOV DX,OFFSET THE_END + SMEGSIZE + 45
- INT 21h
- JNC WROTE_POLY_OK
- CLOSE_IT: CALL DISP_ERROR
- MOV AH,3Eh
- INT 21h
- JMP ERROR_END
-
- WROTE_POLY_OK: CALL ENCRYPT
- MOV AH,40h
- MOV CX,[BP]
- MOV DX,OFFSET THE_END + SMEGSIZE + 45
- INT 21h
- JC CLOSE_IT
- CALL JUNK_GEN
- MOV AH,40h
- INT 21h
- JC CLOSE_IT
- MOV AH,3Eh
- INT 21h
- JC CLOSE_ERROR
-
- MOV BX,OFFSET F_NAME + 3
- MOV CX,4
- UP_NUMBER: INC BYTE PTR [BX]
- CMP BYTE PTR [BX],'9'+1
- JB NUM_OK
- SUB BYTE PTR [BX],10
- DEC BX
- LOOP UP_NUMBER
-
- NUM_OK: POP CX
- LOOP GEN_PROGS
-
- MOV DX,OFFSET DONE
- MOV AH,9
- INT 21h
-
- MOV AX,4C00h
- INT 21h
-
- DISP_ERROR: MOV DX,OFFSET ERROR
- MOV AH,9
- INT 21h
- RET
-
- DEMO: CALL SKIP_MESSAGE
- DB 13,10,'This was decrypted with a SMEG v0.3 generated decryptor!'
- DB 13,10,'$'
- SKIP_MESSAGE: POP DX
- MOV AH,9
- INT 21h
- MOV AX,4C00h
- INT 21h
- DEMO_SIZE EQU $ - DEMO
- THE_END EQU $
-
- CODESG ENDS
-
- END BEGIN
-
-
-